*This is the replication dofile for Baekgaard, Belle, Serritzlew, Sicilia, and Steccolini: 
*"Performance Information in Politics: How Framing, Format, and Rhetoric Matter for Politicians’ Preferences"
*Accepted for publication in Journal of Behavioral Public Administration, May 2019.
 
***Recoding descriptive statistics.

*Ideology
rename Q113 ideology
recode ideology (-99=.) (1=1) (3=2) (4=3) (5=4) (6=5) (7=.)
label variable ideology "Political conviction/ideology"
label values ideology ideology
label define ideology 1 "Left-wing" 2 "Mainly to the left" 3 "Centre" 4 "Mainly to the right" 5 "Right-wing", modify

*Population size
destring Population, replace ignore(`"."')

*Gender
encode Gender, gen(gender)
recode gender (1=.) (2=1) (3=0)
label variable gender "Gender pre-coded"
label values gender gender
label define gender 1 "Female" 0 "Male", modify

*Age
gen birthyear = substr(DOB,-2,.)
destring birthyear, replace 
gen age = 116 - birthyear

***Table 1: Summary statistics
sum gender age ideology Population if Q139_6 != .

***Recoding the dependent variable.
recode Q139_6 (-99 = .)
sum Q139_6 

***Figure 2: Histogram for the dependent variable
hist Q139_6, discrete percent gap(0) xtitle(Preferred percentage point change) scheme(s2mono)

***Coding the experimental groups.

gen posframing = 1 if ital_exp_groups == 2 | ital_exp_groups == 6 | ital_exp_groups == 7 | ital_exp_groups == 8 | ital_exp_groups == 9 | ital_exp_groups == 13 | ital_exp_groups == 19 | ital_exp_groups == 20
replace posframing = 0 if posframing == . & ital_exp_groups != 1

gen negframing = 1 if ital_exp_groups == 10 | ital_exp_groups == 11 | ital_exp_groups == 12 | ital_exp_groups == 14 | ital_exp_groups == 21 | ital_exp_groups == 22 | ital_exp_groups == 23 | ital_exp_groups == 24
replace negframing = 0 if negframing == . & ital_exp_groups != 1

gen neutralframing = 1 if posframing == 0 & negframing == 0
replace neutralframing = 0 if neutralframing == . & ital_exp_groups != 1

gen framing = 3 if posframing == 1
replace framing = 2 if neutralframing == 1
replace framing = 1 if negframing == 1
label define framing 3 "Positive framing" 2 "Neutral framing" 1 "Negative framing" , modify

gen ethos = 1 if ital_exp_groups == 4 | ital_exp_groups == 8 | ital_exp_groups == 12 | ital_exp_groups == 17 | ital_exp_groups == 19 | ital_exp_groups == 23
replace ethos = 0 if ethos == . & ital_exp_groups != 1

gen pathos = 1 if ital_exp_groups == 3 | ital_exp_groups == 7 | ital_exp_groups == 11 | ital_exp_groups == 13 | ital_exp_groups == 16 | ital_exp_groups == 22
replace pathos = 0 if pathos == . & ital_exp_groups != 1

gen logos = 1 if ital_exp_groups == 2 | ital_exp_groups == 6 | ital_exp_groups == 10 | ital_exp_groups == 15 | ital_exp_groups == 21 | ital_exp_groups == 25
replace logos = 0 if logos == . & ital_exp_groups != 1

gen neutral = 1 if logos == 0 & ethos == 0 & pathos == 0
replace neutral = 0 if neutral == . & ital_exp_groups != 1

gen rhetoric = 4 if ethos == 1
replace rhetoric = 3 if pathos == 1
replace rhetoric = 2 if logos == 1
replace rhetoric = 1 if neutral == 1
label define rhetoric 4 "Ethos" 3 "Pathos" 2 "Logos" 1 "Neutral" , modify

gen highreadability = 1 if ital_exp_groups == 6 | ital_exp_groups == 7 | ital_exp_groups == 8 | ital_exp_groups == 9 | ital_exp_groups == 10 | ital_exp_groups == 11 | ital_exp_groups == 12 | ital_exp_groups == 14 | ital_exp_groups == 15 | ital_exp_groups == 16 | ital_exp_groups == 17 | ital_exp_groups == 18
replace highreadability = 0 if highreadability == . & ital_exp_groups != 1

gen lowreadability = 1 if highreadability == 0   
replace lowreadability = 0 if highreadability == 1

gen readability = 2 if highreadability == 1
replace readability = 1 if lowreadability == 1
label define readability 2 "highreadability" 1 "lowreadability" , modify

*Descriptives

sum posframing- lowreadability if Q139_6 != .
bysort framing: sum Q139_6
bysort readability: sum Q139_6
bysort rhetoric: sum Q139_6

***Figure 3: Preferred percentage point changes by experimental group

cibar Q139_6 , over1(rhetoric) over2(framing) over3(readability) barlabel(off) barcolor(gs1 gs5 gs9 gs13) blf(%9.3f)  graphopts(ytitle("Preferred percentage point change") scheme(s2mono) legend(on))

gr_edit legend.plotregion1.label[1].text = {}
gr_edit legend.plotregion1.label[1].text.Arrpush Neutral
gr_edit legend.plotregion1.label[2].text = {}
gr_edit legend.plotregion1.label[2].text.Arrpush Logos
gr_edit legend.plotregion1.label[3].text = {}
gr_edit legend.plotregion1.label[3].text.Arrpush Pathos
gr_edit legend.plotregion1.label[4].text = {}
gr_edit legend.plotregion1.label[4].text.Arrpush Ethos
gr_edit xaxis1.major.num_rule_ticks = 0
gr_edit xaxis1.edit_tick 9 7.17 `"" " " " "Textual format""', tickset(major)
gr_edit xaxis1.major.num_rule_ticks = 0
gr_edit xaxis1.edit_tick 10 22.51 `"" " " " "Graphical format""', tickset(major)
gr_edit xaxis1.major.num_rule_ticks = 0
gr_edit xaxis1.edit_tick 2 2.5 `"Negative framing"', tickset(major)
gr_edit xaxis1.major.num_rule_ticks = 0
gr_edit xaxis1.edit_tick 3 7.17 `"Neutral framing"', tickset(major)
gr_edit xaxis1.major.num_rule_ticks = 0
gr_edit xaxis1.edit_tick 2 2.5 `"Neg. framing"', tickset(major)
gr_edit xaxis1.major.num_rule_ticks = 0
gr_edit xaxis1.edit_tick 3 7.17 `"Neu. framing"', tickset(major)
gr_edit xaxis1.major.num_rule_ticks = 0
gr_edit xaxis1.edit_tick 2 2.5 `"Neg. framing"', custom tickset(major) editstyle(tickstyle(textstyle(size(small))) )
gr_edit xaxis1.major.num_rule_ticks = 0
gr_edit xaxis1.edit_tick 3 7.17 `"Neu. framing"', custom tickset(major) editstyle(tickstyle(textstyle(size(small))) )
gr_edit xaxis1.major.num_rule_ticks = 0
gr_edit xaxis1.edit_tick 4 11.84 `"Pos. framing"', custom tickset(major) editstyle(tickstyle(textstyle(size(small))) )
gr_edit xaxis1.major.num_rule_ticks = 0
gr_edit xaxis1.edit_tick 5 17.84 `"Neg framing"', custom tickset(major)
gr_edit xaxis1.major.num_rule_ticks = 0
gr_edit xaxis1.edit_tick 6 22.51 `"Neu. framing"', tickset(major)
gr_edit xaxis1.major.num_rule_ticks = 0
gr_edit xaxis1.edit_tick 7 27.18 `"Pos. framing"', tickset(major)
gr_edit xaxis1.major.num_rule_ticks = 0
gr_edit xaxis1.edit_tick 5 17.84 `"Neg framing"', custom tickset(major) editstyle(tickstyle(textstyle(size(small))) )
gr_edit xaxis1.major.num_rule_ticks = 0
gr_edit xaxis1.edit_tick 6 22.51 `"Neu. framing"', custom tickset(major) editstyle(tickstyle(textstyle(size(small))) )
gr_edit xaxis1.major.num_rule_ticks = 0
gr_edit xaxis1.edit_tick 7 27.18 `"Pos. framing"', custom tickset(major) editstyle(tickstyle(textstyle(size(small))) )

**'Table 2: Regression analysis.

reg Q139_6 ethos pathos logos posframing negframing highreadability, robust
reg Q139_6 ethos pathos logos highreadability posframing negframing c.ethos#c.highreadability pathos#c.highreadability logos#c.highreadability , robust
reg Q139_6 ethos pathos logos highreadability posframing negframing c.posframing#c.highreadability negframing#c.highreadability , robust
reg Q139_6 ethos pathos logos highreadability posframing negframing c.posframing#c.ethos c.negframing#c.ethos c.posframing#c.pathos c.negframing#c.pathos c.posframing#c.logos c.negframing#c.logos, robust

***Figure 4: The impact of rhetoric style by information format.

mat eksperiment=J(6,3,.)

reg Q139_6 ethos pathos logos posframing negframing if  highreadability == 1, robust

matrix t1 = r(table)'
matrix eksperiment [1,1] =t1[1,1] 
matrix eksperiment [1,2] =t1[1,5] 
matrix eksperiment [1,3] =t1[1,6]
matrix eksperiment [2,1] =t1[2,1] 
matrix eksperiment [2,2] =t1[2,5] 
matrix eksperiment [2,3] =t1[2,6]
matrix eksperiment [3,1] =t1[3,1] 
matrix eksperiment [3,2] =t1[3,5] 
matrix eksperiment [3,3] =t1[3,6]

reg Q139_6 ethos pathos logos posframing negframing if  highreadability == 0, robust

matrix t1 = r(table)'
matrix eksperiment [4,1] =t1[1,1] 
matrix eksperiment [4,2] =t1[1,5] 
matrix eksperiment [4,3] =t1[1,6]
matrix eksperiment [5,1] =t1[2,1] 
matrix eksperiment [5,2] =t1[2,5] 
matrix eksperiment [5,3] =t1[2,6]
matrix eksperiment [6,1] =t1[3,1] 
matrix eksperiment [6,2] =t1[3,5] 
matrix eksperiment [6,3] =t1[3,6]

matrix rownames eksperiment = 1 2 3 4 5 6

coefplot (matrix(eksperiment [.,1]), ci((eksperiment [.,2] eksperiment [.,3]))), byopts(xrescale) ///
headings(1 = "{bf: Graphical format}" 4 = "{bf: Textual format}") ///
coeflabels(1 = "Ethos" 2 = "Pathos" 3 = "Logos" 4 = "Ethos" 5 = "Pathos" 6 = "Logos" , labgap(4) labsize(medsmall) notick) ///
xline(0, lwidth(vthin) lpattern(dash) lcolor(black)) grid(none) ///
xscale(range(-2(1)2)) xtick(-2(1)2) xlabel(-2(1)2) ///
citop ciopts(recast(rcap)) levels(95) msymbol(o) ///
scheme(s1mono)


*Figure 5: The impact of equivalence framing by information format.

mat eksperiment=J(4,3,.)

reg Q139_6 posframing negframing ethos pathos logos if  highreadability == 1, robust

matrix t1 = r(table)'
matrix eksperiment [1,1] =t1[1,1] 
matrix eksperiment [1,2] =t1[1,5] 
matrix eksperiment [1,3] =t1[1,6]
matrix eksperiment [2,1] =t1[2,1] 
matrix eksperiment [2,2] =t1[2,5] 
matrix eksperiment [2,3] =t1[2,6]

matlist t1

reg Q139_6 posframing negframing ethos pathos logos if  highreadability == 0, robust

matrix t1 = r(table)'
matrix eksperiment [3,1] =t1[1,1] 
matrix eksperiment [3,2] =t1[1,5] 
matrix eksperiment [3,3] =t1[1,6]
matrix eksperiment [4,1] =t1[2,1] 
matrix eksperiment [4,2] =t1[2,5] 
matrix eksperiment [4,3] =t1[2,6]


matrix rownames eksperiment = 1 2 3 4

coefplot (matrix(eksperiment [.,1]), ci((eksperiment [.,2] eksperiment [.,3]))), byopts(xrescale) ///
headings(1 = "{bf: Graphical format}" 3 = "{bf: Textual format}") ///
coeflabels(1 = "Positive framing" 2 = "Negative framing" 3 = "Positive framing" 4 = "Negative framing", labgap(4) labsize(medsmall) notick) ///
xline(0, lwidth(vthin) lpattern(dash) lcolor(black)) grid(none) ///
xscale(range(-2(1)2)) xtick(-2(1)2) xlabel(-2(1)2) ///
citop ciopts(recast(rcap)) levels(95) msymbol(o) ///
scheme(s1mono)
